package com.fuda.trade

import androidx.test.platform.app.InstrumentationRegistry
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.zenoh.Session
import io.zenoh.keyexpr.KeyExpr

import org.junit.Test
import org.junit.runner.RunWith

import org.junit.Assert.*

/**
 * Instrumented test, which will execute on an Android device.
 *
 * See [testing documentation](http://d.android.com/tools/testing).
 */
@RunWith(AndroidJUnit4::class)
class ExampleInstrumentedTest {
    @Test
    fun useAppContext() {
        // Context of the app under test.
        val appContext = InstrumentationRegistry.getInstrumentation().targetContext
        assertEquals("com.fuda.trade", appContext.packageName)



        println("Opening session...")
        Session.open().use { session ->
            val keyExprStr = "trade/orders"
            KeyExpr.tryFrom(keyExprStr).use { keyExpr ->
                println("Declaring publisher on '$keyExpr'...")
                session.declarePublisher(keyExpr).res().use { publisher ->
                    println("Press CTRL-C to quit...")
                    var idx = 0
                    while (true) {
                        Thread.sleep((5 * 1000).toLong())
                        val payload = String.format("%4s@ExampleInstrumentedTest.kt", idx)
                        println("Putting Data ('$keyExpr': '$payload')...")
                        publisher.put(payload).res()
                        idx++
                    }
                }
            }
        }

    }
}